scale button: Allocate popovers
authorMatthias Clasen <mclasen@redhat.com>
Sat, 4 May 2019 17:14:06 +0000 (17:14 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 May 2019 20:25:15 +0000 (20:25 +0000)
Call gtk_native_check_resize() from size_allocate,
as is required now. This gets volume buttons closer
to working again (dragging the slider still doesn't
work).

gtk/gtkscalebutton.c

index 7e76ea9fdddd3494ae826bc02f9adc3aefcc89ce..1f6dc9b772dff1a1309f242d5c548010fd0f3e98 100644 (file)
@@ -54,6 +54,7 @@
 #include "gtkscale.h"
 #include "gtktypebuiltins.h"
 #include "gtkwindowprivate.h"
+#include "gtknative.h"
 
 #include "a11y/gtkscalebuttonaccessible.h"
 
@@ -135,6 +136,10 @@ static void        gtk_scale_button_get_property   (GObject             *object,
                                                 guint                prop_id,
                                                 GValue              *value,
                                                 GParamSpec          *pspec);
+static void     gtk_scale_button_size_allocate  (GtkWidget           *widget,
+                                                 int                  width,
+                                                 int                  height,
+                                                 int                  baseline);
 static void gtk_scale_button_set_orientation_private (GtkScaleButton *button,
                                                       GtkOrientation  orientation);
 static void     gtk_scale_button_clicked        (GtkButton           *button);
@@ -174,6 +179,8 @@ gtk_scale_button_class_init (GtkScaleButtonClass *klass)
   gobject_class->set_property = gtk_scale_button_set_property;
   gobject_class->get_property = gtk_scale_button_get_property;
 
+  widget_class->size_allocate = gtk_scale_button_size_allocate;
+
   button_class->clicked = gtk_scale_button_clicked;
 
   /**
@@ -989,3 +996,17 @@ cb_popup_mapped (GtkWidget *popup,
 
   gtk_widget_grab_focus (priv->scale);
 }
+
+static void
+gtk_scale_button_size_allocate (GtkWidget *widget,
+                                int        width,
+                                int        height,
+                                int        baseline)
+{
+  GtkScaleButton *button = GTK_SCALE_BUTTON (widget);
+  GtkScaleButtonPrivate *priv = gtk_scale_button_get_instance_private (button);
+
+  GTK_WIDGET_CLASS (gtk_scale_button_parent_class)->size_allocate (widget, width, height, baseline);
+
+  gtk_native_check_resize (GTK_NATIVE (priv->dock));
+}